The invention is related to Internet Protocol (IP) telephony systems. More specifically, the invention is related to systems and methods for routing the data packets that carry telephony communications, such as audio and video calls, text and video messages, and other forms of data communications. The communications are transmitted, at least in part, by data packets that traverse a private and/or public data network.
When a new telephony communication is being established by an IP telephony system between first and second telephony devices, it is possible for the IP telephony system to specify at least some of the elements which will comprise the communications channel between the first and second telephony devices. The elements which are part of a communications channel could include a wireless access point or some other data network interface that is used by one of the telephony devices to gain access to a data network. The communications channel may also include a service provider that connects the wireless access point or other data network interface device to a public data network, such as the Internet. The communications channel may also include one or more media relays which are used to transmit data packets along the communications channel. In some instances, an inbound proxy server (or originating gateway), and an outbound proxy server (or a destination gateway) may form part of the communications channel. Further, a gateway that is used as an interface between a data network and a publicly switched telephone network (PSTN) or a cellular service provider may also be a part of the communications channel.
Typically, the IP telephony system can at least specify the media relays and/or proxy servers which form part of the communications channel which will carry the data packets bearing the media of a telephony communication. However, the IP telephony system will not necessarily have full knowledge regarding the capabilities of all of those elements, or their current data carrying capacity.
Depending on the requirements for a telephony communication, it may be necessary or desirable to perform certain functions or transformations on the data packets as they are communicated between the first and second telephony devices. Those functions or transformations would be performed by one or more of the elements of the data network which make up the communications channel. However, the IP telephony system may not be aware of all of the functional capabilities of all of the elements of the data network which can be used to establish the communications channel. For this reason, the IP telephony system might fail to include an element of the data network in a communications channel because the IP telephony system is unaware that the element can perform a required function or transformation. Likewise, the IP telephony system might include a certain element of the data network in a communications channel, assuming that it can perform a certain function, when in fact it cannot. As a result, the communications channel might perform poorly, or it might fail entirely.
Also, the quality of an IP telephony communication can be highly dependent on how well the data packets carrying the media of the telephony communication are being transmitted over the communications channel. If data packets are being lost, call quality will deteriorate. If transmitted data packets are being significantly delayed, call quality will deteriorate. Another problem is jitter, where the latency or delay is variable in nature. If jitter becomes a problem, call quality also will deteriorate. In many instances, an IP telephony system will not have complete knowledge about the quality of the data connections between the elements that comprise a communications channel. If the IP telephony system has any knowledge, it may only be historical knowledge about the past performance of the elements, and the past performance may not be indicative of the present performance of those elements. It is difficult for an IP telephony system to gather and maintain real-time information about the quality of data connections to and from the elements of a data network which can be used to establish a communications channel between first and second telephony devices.
Recently, some attempts have been made to identify multiple potential communications channels which could be used to communicate the media of an IP telephony communication, and the potential communications channels are tested before a particular communications channel is selected. The testing can be performed by the telephony devices themselves, or by elements of the data network that are in communication with the telephony devices. By testing the functionality of a communications channel before the telephony communication begins, one can avoid selecting a communications channel that will be inoperative, or which will perform poorly. Some such systems and methods for conducting testing of potential communications channels before a particular communications channel is selected are disclosed in U.S. patent application Ser. No. 13/236,065, which was filed on Sep. 19, 2011, the entire contents of which is hereby incorporated by reference.
While it is helpful to test proposed communications channels before an initial communication channel is selected, the proposed communications channels themselves must be selected so that the communications channels are capable of satisfying the functional and quality requirements for the telephony communication. What is needed are systems and methods which obtain information about the elements of a data network which can be used to establish a communications channel, and which use that information to identify combinations of the elements that would provide communications channels satisfying all requirements for a telephony communication.